package csw;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import csw.model.SungJuk2VO;

public class J19ArrayList {

	public static void main(String[] args) {

		// ArrayList
		// 실무에서 빈번하게 사용되는 컬렉션 객체 중 하나
		// 배열과 달리 입력하는 데이터 객수에 따라 크기가 유동적으로 변함
		// 동일한 값을 여러게 저장할수 있고
		// 입력되는 값들은 순서를 가짐

		// 선언 및 정의
		ArrayList<String> woman = new ArrayList<>();
		ArrayList<SungJuk2VO> sj = new ArrayList<>();

		// 추가하기 add
		woman.add("태희");
		woman.add("혜교");
		woman.add("지현");

		sj.add(new SungJuk2VO("태희", 99, 97, 98));
		sj.add(new SungJuk2VO("혜교", 95, 95, 97));
		sj.add(new SungJuk2VO("지현", 97, 96, 97));

		// 하나씩 조회 get
		System.out.println(woman.get(0));
		System.out.println(woman.get(1));
		System.out.println(woman.get(2));
		// SungJuck2VO의 toString()에 의해 출력
		System.out.println(sj.get(0).getName());
		System.out.println(sj.get(1).getName());
		System.out.println(sj.get(2).getName());

		// 몽땅 출력(for-each문 사용)
		// ArrayList<a>b = new ArrayList<>();
		// for(a ??: b){}
		// for( 요소유형 요소명 : arraylist 객체명)
		for (String str : woman) {
			System.out.println(str);
		}
		for (SungJuk2VO s : sj) {
			System.out.println(s);
		}
		// 수정하기 set(위치, 값)
		System.out.println(woman.get(1));
		woman.set(1, "수지");
		System.out.println(woman.get(1));
		SungJuk2VO newOne = new SungJuk2VO(" ", 78, 35, 45);
		System.out.println(sj.get(2));
		sj.set(2, newOne);
		System.out.println(sj.get(2));

		// 삭제 remove(위치)
		for (String str : woman) {
			System.out.println(str);
		}
		woman.remove(1);
		for (SungJuk2VO s : sj) {
			System.out.println(s);
		}
		sj.remove(2);

		// 포함여부 확인 contatins/indexOf
		String key = "지현";
		if (woman.contains(key)) {
			System.out.println("데이터가 존재합니다");
			System.out.println("위치는" + woman.indexOf(key));
		} else {
			System.out.println("데이터가 없어용");
		}
		key = "수지";
		for (SungJuk2VO s : sj) {
			if(s.getName().contains(key)){
				System.out.println("찾앗다요");
			} else {
				System.out.println("못 찾았다요");
			}
		}

		// 정렬 sort
		Collections.sort(woman);
		for (String str : woman) {
			System.out.println(str);
		}
		//객체를 대상으로 정렬하려면
		//Comparator라는 인터페이스를 구현하고
		//Collections.sort(대상,정렬기준);
		//으로 호출해서 사용해야함
		Collections.sort(sj, new NameSort());
		for(SungJuk2VO s : sj){
			System.out.println(s);
		}
		
		
		// 모두삭제 clear
		woman.clear();
		sj.clear();

		for (String str : woman) {
			System.out.println(str);
		}
		for (SungJuk2VO s : sj) {
			System.out.println(s);
		}

		}//main
	}//class
		
	class NameSort implements	Comparator<SungJuk2VO>{
		
		@Override
		public int compare(
				SungJuk2VO sj1, SungJuk2VO sj2){
			
			return 
					sj1.getName().compareTo(sj2.getName());
		}
}

